﻿/*
File: CDevice.h

Leírás:
	A megjelenítésért felelő eszközt(D3DX9) kezelő osztály. 
  Ezen keresztül lehet állítani és lekérdezni az eszközzel kapcsolatos 
  beállításokat.

Szerző: Sipos
*/


#ifndef __CDEVICE_H__
#define __CDEVICE_H__

#include <d3dx9.h>
#include "..\Util\\Utilities.h"


namespace Engine
{
	class CDevice
	{
	public:
    // eszköz létrehozása
		static CDevice* createDevice(HWND hWnd);

    // eszköz lekérése
		static CDevice* getInstance();		

    static void destroy();

    // képernyő szélességének lekérése
    int getScreenWidth();

    // képernyő magasságának lekérése
    int getScreenHeight();

    // váltás teljes képernyős és ablakos üzemmód között
    void switchScreenMode();

    // eszköz elengedésa
		void clean();

    // DirectX eszköz 
    IDirect3DDevice9* getD3DDevice();

    // eszköz resetelése
    HRESULT resetDevice();


private:
		CDevice(HWND hWnd);
		~CDevice();

    // dx-es eszköz inicializálása
    void initD3D();

		// device instance
    static CDevice * pInstance;

    
    // dx-es mutatük
		IDirect3D9* pD3D ; 
		IDirect3DDevice9* pD3DDevice;
		D3DPRESENT_PARAMETERS d3dpp;

    // ablak azonosító
		HWND hWnd;

    // teljes képernyős üzemmód-e
    bool fullscreen;

    // képernyő méretek
    int screenWidth, screenHeight;

	};

}

#endif